package model

import (
	"context"
	"fmt"

	go_service "gitee.com/liumou_site/go-service"
)

// CreateSshService 使用 go-service 库创建 SSH 服务。
// 该函数会创建一个 systemd 服务单元文件，并配置相关参数。
// 返回值:
//   - error: 如果服务创建失败，返回错误信息；否则返回 nil。
func (i Info) CreateSshService() error {
	if i.Debug {
		GetLanguageManager().Debug("创建SSH服务", "CreateSshService")
	}
	// 定义需要清理的文件路径列表
	oldConfigPaths := []string{
		"/etc/init.d/ssh",                      // init 启动脚本
		"/etc/systemd/system/ssh.service",      // 其他可能的 systemd 服务文件
		"/etc/systemd/system/sshd.service.bak", // 备份文件
		"/usr/lib/systemd/system/sshd.service", // 其他可能的 systemd 服务文件
		"/usr/lib/systemd/system/ssh.service",  // 其他可能的 systemd 服务文件
	}
	err := cleanupOldSSHConfig(oldConfigPaths)
	if err != nil {
		return err
	}

	// 使用 go-service 库创建 SSH 服务
	ctx := context.Background()
	service, err := go_service.NewService("sshd", "SSH Service", "/usr/sbin/sshd")
	if err != nil {
		GetLanguageManager().Error("创建服务实例失败: ", "Failed to create service instance: ", err)
		return fmt.Errorf("创建服务实例失败: %v", err)
	}

	// 配置服务参数
	service.SetRestartPolicy("always")
	service.SetUser("root")
	service.SetAutoStart(true)
	service.SetWantedBy("multi-user.target")

	// 创建并启用服务
	err = service.CreateService(ctx)
	if err != nil {
		langManager.Error("创建服务失败:", "Failed to create service:", err)
		return fmt.Errorf("创建服务失败: %v", err)
	}

	err = service.EnableService(ctx)
	if err != nil {
		langManager.Error("启用服务失败:", "Failed to enable service:", err)
		return fmt.Errorf("启用服务失败: %v", err)
	}

	GetLanguageManager().Info("SSH service 创建并启用成功", "SSH service created and enabled successfully")
	return nil
}
